package generator.engine;

import generator.entity.ClassInfo;
import generator.util.GenConfig;

/**
 * 生成引擎
 *
 * @author chengsp
 * @date 2019/9/20 15:33
 */
public interface GeneralEngine extends Executor {
	/**
	 * 生成控制层 GeneralEngine
	 *
	 * @param classInfo
	 */
	void genController(ClassInfo classInfo);

	/**
	 * 生成业务层(包括业务接口(如果有)和业务实现类)
	 *
	 * @param classInfo
	 */
	void genService(ClassInfo classInfo);

	/**
	 * 生成持久层类
	 *
	 * @param classInfo
	 */
	void genRepositoryClass(ClassInfo classInfo);

	/**
	 * 生成持久层xml(如果是mybatis)
	 *
	 * @param classInfo
	 */
	void genRepositoryXml(ClassInfo classInfo);

	/**
	 * 生成实体
	 *
	 * @param classInfo
	 */
	void genEntity(ClassInfo classInfo);

	/**
	 * 生成前端页面(包括html/css/js)
	 *
	 * @param classInfo
	 */
	void genUi(ClassInfo classInfo);

	/**
	 * 生成配置文件(包括pom.xml,application.yml,application.properties)
	 */
	void genConfig();

	/**
	 * 获取生成配置
	 *
	 * @return
	 */
	GenConfig getGenConfig();

	/**
	 * 生成固有的文件
	 */
	void genFix();
}
